<class 'int'>
<class 'float'>
在金融和商业数据分析中,选择正确的数据类型是构建可靠程序的基础。
105.5023000'600000.SH'True数据类型决定了你可以对数据执行哪些操作
| 特征 | 含义 | 举例 |
|---|---|---|
| 动态类型 | 变量无需声明类型,运行时自动绑定 | x = 10 自动识别为int |
| 强类型 | 不同类型之间不会隐式转换 | '10' + 5 会报错 |
Python中的数值类型主要包括两大类:
| 类型 | 说明 | 示例 |
|---|---|---|
| int(整型) | 任意精度整数,不限大小 | 100, -5, 0 |
| float(浮点型) | IEEE 754 双精度浮点数 | 3.14, -0.01 |
普通年金(Ordinary Annuity)是金融学中的核心概念,指在每期期末进行等额收付的系列款项。
\[ \large{ FV = A \times \frac{(1+i)^n - 1}{i} }\]
每期末支付金额A,利率i,期数n,各期终值累加为:
\[ \large{ FV = A(1+i)^{n-1} + A(1+i)^{n-2} + \cdots + A }\]
这是首项为A、公比为\((1+i)\)、项数为n的等比数列,由求和公式得:
\[ \large{ FV = \frac{A[(1+i)^n - 1]}{(1+i) - 1} = A \times \frac{(1+i)^n - 1}{i} }\]
刚才的代码用到了几个核心语法:
= 将值绑定到变量名
A = 10000 → 每期金额一万元** 表示乘方
(1+i)**n → \((1+0.05)^{10}\)'{:.2f}'.format(F) 保留两位小数年金终值公式在生活中有很多实际应用:
| 场景 | 说明 |
|---|---|
| 养老金规划 | 计算每月定投在退休时的总额 |
| 教育金储备 | 计算每月储蓄教育基金的未来价值 |
| 企业偿债基金 | 为偿还到期债务而建立的偿债基金 |
掌握了年金终值的计算,就掌握了复利的力量!
字符串是Python中用于表示文本数据的类型。
'hello' 或 '沪深300'金融应用场景:
'600000.SH''中国建设银行''2025-12-31'ilovepython
i
ove
ilovepythonhelloworld
ILOVEPYTHON
| 代码 | 操作 | 结果 |
|---|---|---|
s[0] |
获取第一个字符 | 'i' |
s[2:5] |
切片(索引2到4) | 'ove' |
s + a |
字符串拼接 | 'ilovepythonhelloworld' |
s.upper() |
转换为大写 | 'ILOVEPYTHON' |
关键点:
[start:end] 包含start,不包含end+ 运算符在字符串间表示拼接,在数字间表示加法Python 3 采用 Unicode 编码,可以无缝处理中文字符:
7
沪
沪深
每个中文字符和英文字符在索引时地位相同,都占一个位置。
# 证券代码标准化:拼接股票代码与交易所标识
stock_code = '000001'
exchange = 'SZ'
full_code = stock_code + '.' + exchange
print(full_code) # 000001.SZ (平安银行)
# 公司名称格式化:首字母大写
company = 'china construction bank'
print(company.title()) # China Construction Bank
# 从完整代码中提取交易所信息
code_with_exchange = '600000.SH'
market = code_with_exchange.split('.')[1]
print(market) # SH (上海证券交易所)000001.SZ
China Construction Bank
SH
不同来源的金融数据,其类型可能不一致:
'10.55'10.55Python是强类型语言,不同类型之间不能直接运算,必须显式转换。
| 函数 | 功能 | 示例 | 金融应用 |
|---|---|---|---|
int() |
转为整型 | int('123') → 123 |
交易量转换 |
float() |
转为浮点型 | float('3.14') → 3.14 |
价格转换 |
str() |
转为字符串 | str(100) → '100' |
输出展示 |
bool() |
转为布尔型 | bool(1) → True |
状态判断 |
交易金额: 1055.00
错误: can only concatenate str (not "int") to str
强类型的好处:避免因隐式转换导致的金融计算错误!
布尔类型只有两个值,在金融决策中广泛用于条件判断。
True
常用比较运算符:
| 运算符 | 含义 | 示例 |
|---|---|---|
>, < |
大于、小于 | 105 > 100 → True |
>=, <= |
大于等于、小于等于 | 100 >= 100 → True |
== |
等于 | 10 == 10 → True |
!= |
不等于 | 10 != 5 → True |
| 运算符 | 含义 | 规则 |
|---|---|---|
and |
与 | 两个都为True才为True |
or |
或 | 任一为True就为True |
not |
非 | 取反 |
是否平仓: False
当前价格 102.5 在止损价(98)和止盈价(108)之间,因此不触发平仓。
Python中所有对象都可以进行布尔值测试:
被视为 False (Falsy) |
被视为 True (Truthy) |
|---|---|
None |
非None的任何对象 |
0, 0.0 |
非零数值 |
'' (空字符串) |
非空字符串 |
[], (), {} (空容器) |
非空容器 |
False |
True |
0.30000000000000004
False
原因:0.1 和 0.2 在二进制中无法精确表示(类似于 \(1/3\) 在十进制中无法精确表示)。
在金融计算中,这种微小误差可能累积失控!
import math
from decimal import Decimal, getcontext
# 方法1:近似比较 (math.isclose)
print(math.isclose(0.1 + 0.2, 0.3)) # True
# 方法2:Decimal模块 (精确十进制运算)
getcontext().prec = 6 # 设置6位有效数字
price1 = Decimal('0.1') # 注意:参数必须是字符串
price2 = Decimal('0.2')
result = price1 + price2
print(result) # 0.3 (精确!)
print(result == Decimal('0.3')) # TrueTrue
0.3
True
金融计算最佳实践:
Decimal 模块math.isclose() 而非 ==| 数据类型 | 关键字 | 金融应用 |
|---|---|---|
| int | 整型 | 交易量、期数 |
| float | 浮点型 | 股价、利率 |
| str | 字符串 | 证券代码、公司名称 |
| bool | 布尔型 | 条件判断、交易信号 |
核心要点:
Decimal[商业大数据分析与应用]